#pragma once

#define MaxTweetWords     71

enum TwitterElement
{
  TwitterElement_None,
  TwitterElement_Date,
  TwitterElement_Id,
  TwitterElement_Text,
  TwitterElement_Source,
  TwitterElement_InReplyToScreenName,
  TwitterElement_ScreenName,
  TwitterElement_ProfileImageUrl
};

enum LinkType
{
  NoLink,
  UserLink,
  WebLink
};

struct TwitterUIText
{
  CString Text;
  RectF Rect;
};

struct TwitterTweetWord
{
  LinkType Link;
  int First;
  int Length;
  RectF Rect;
};

/*!
 * \brief   A simplified representation of a single Twitter user element
 */
struct TwitterUser
{
  CString Id;
  TwitterUIText ScreenName;
  TwitterUIText ProfileImageUrl;
};

/*!
 * \brief   A simplified representation of a single Twitter status element
 */
struct TwitterStatus
{
  TwitterUIText CreatedAt;
  CString Id;
  CString FullText;
  INT LinkCount;
  int NumWords;
  int NumLines;
  TwitterTweetWord Words[MaxTweetWords];
  TwitterUIText Source;
  TwitterUIText InReplyToScreenName;
  BOOL Truncated;
  bool HasLayout;
  
  RectF ReplyRect;
  RectF RetweetRect;

  TwitterUser User;

  TwitterStatus() : HasLayout(false) {}
  VOID EmptyRects();
};